package org.pizza.dlock.distributed.lock.api;

import java.lang.annotation.*;

/**
 * @author 高巍
 * @date 2019-11-27 10:42 上午
 * 分布式锁注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface DLock {

    /**
     * @return 锁key的前缀
     */
    String prefix() default "";

    /**
     * @return  阻塞等待时间
     */
    int waitTime() default 0;

    /**
     * @return 持有锁的时间
     */
    int leaseTime() default 5000;

    /**
     * @return Key的分隔符（默认 :）<p>生成的Key：N:SO1008:500</p>
     */
    String delimiter() default ":";

    /**
     * @return 锁冲突是否抛出异常，默认否
     */
    boolean isThrow() default false;
}